package com.mkx.spi.impl;

import com.mkx.spi.LoggingService;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * 文件日志服务实现 (FileLoggingServiceImpl)
 * SPI设计模式的服务提供者实现之一
 * 实现了基于文件输出的日志记录功能（这里模拟文件输出，实际输出到控制台）
 */
public class FileLoggingServiceImpl implements LoggingService {
    
    // 日期时间格式化器
    private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
    
    /**
     * 记录信息日志到文件（这里模拟文件输出）
     * @param message 日志消息
     */
    @Override
    public void logInfo(String message) {
        String timestamp = LocalDateTime.now().format(formatter);
        // 实际应用中，这里应该写入文件
        System.out.println("[FILE] [" + timestamp + "] [INFO] " + message);
    }
    
    /**
     * 记录错误日志到文件（这里模拟文件输出）
     * @param message 错误消息
     * @param throwable 异常信息
     */
    @Override
    public void logError(String message, Throwable throwable) {
        String timestamp = LocalDateTime.now().format(formatter);
        // 实际应用中，这里应该写入文件
        System.err.println("[FILE] [" + timestamp + "] [ERROR] " + message);
        if (throwable != null) {
            // 实际应用中，异常堆栈也应该写入文件
            System.err.println("[FILE] Exception: " + throwable.getMessage());
        }
    }
    
    /**
     * 获取日志服务的名称
     * @return 服务名称
     */
    @Override
    public String getServiceName() {
        return "FileLoggingService";
    }
}